﻿#define _CRT_SECURE_NO_WARNINGS 1

//指针+- 整数 
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0]; //取出数组首元素的地址
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));//p+i 这⾥就是指针+整数 
//	}
//	printf("\n");
//	return 0;
//}



//int main()
//{
//	int a[] = { 1,2,3,4,5 };
//	int* x = &a[0];
//	int* y = &a[4];
//	int num = (int)(y - x);
//	printf("%d\n", num);
//	return 0;
//}


//指针-指针 
//#include <stdio.h>
//int my_strlen(char* s)
//{
//	char* p = s;
//	while (*p != '\0')
//		p++;
//	return p - s;
//}
//int main()
//{
//	//int num = my_strlen("abcef");
//	//printf("%d\n",num);
//	printf("%zd\n", sizeof("abcef"));
//	return 0;
//}

//指针的关系运算 
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	while (p < arr + 5) //指针的⼤⼩⽐较 
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	//局部变量指针未初始化
//	// 默认为随机值 
//	int* p;
//	*p = 20;
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	//将数组初始化为10个0
//	int arr[10] = { 0 }; 
//	int* p = &arr[11]; //
//	printf("%d\n", *p);
//	return 0;
//}

//#include <stdio.h>
//int* test()
//{
//	int n = 100;
//	return &n;
//}
//
//int main()
//{
//	int* p = test();
//	printf("%d\n", *p);
//	return 0;
//}

//#include <stdio.h>
//#include <assert.h>
//int main()
//{
//	int* p = NULL;
//	assert(p != NULL);
//	printf("\n");
//	return 0;
//}

//#include <stdio.h>
//
//void swap(int x, int y)
//{
//	int tmp = x;
//	x = y;
//	y = tmp;
//}
//int main()
//{
//	int a = 5;
//	int b = 10;
//	swap(a, b);
//	return 0;
//}

//#include <stdio.h>
//void swap2(int* x, int* y)
//{
//	int tmp = *x;
//	*x = *y;
//	*y = tmp;
//}
//int main()
//{
//	int a = 5;
//	int b = 10;
//	printf("交换前：a=%d b=%d\n", a, b);
//	swap2(&a, &b);
//	printf("交换后：a=%d b=%d\n", a, b);
//	return 0;
//}

//实现一个函数is_prime，判断一个数是不是素数。
//利用上面实现的is_prime函数，打印100到200之间的素数。
//#include <stdio.h>
//#include<math.h>
//
//void is_prime(int x)
//{
//	for (int i = 2; i <= sqrt(x); i+=2)
//	{
//		if (x % i == 0)
//		{
//			return;			
//		}
//	}
//	printf("%d ", x);
//}
//
//int main()
//{
//	for (int i = 100; i < 200; i++)
//	{
//		is_prime(i);
//	}
//
//	return 0;
//}

//void reserve_str(char* str, int n)
//{
//	char* b = (char*)malloc(sizeof(char) * strlen(str));
//	for (int i = 0; i < n; i++)
//	{
//		b[i] = str[i + n];
//	}
//
//	for (int i = 0; i < n; i++)
//	{
//		b[i + n] = str[i];
//	}
//	str = b;
//	free(b);
//}
//
//#include <stdio.h>
//int main()
//{
//	char a[] = "abcdef";
//	int num = 3;
//	reserve_str(a, num);
//	printf("%s",a );
//	//printf("%c", a[0]);
//	return 0;
//}


//#include <iostream>
//#include <string>
//using namespace std;
//int main() 
//{
//    string str;
//    getline(cin, str);
//    for (int i = str.size() - 1; i >= 0; i--)
//        cout << str[i];
//}


//#include <stdio.h>
//int main()
//{
//	int arr[5] = { 1,2,3,4,5 };
//	printf("&arr[0] = %p\n", &arr[0]);
//	printf("arr = %p\n", arr);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[5]= { 1,2,3,4,5 };
//	printf("%zd\n", sizeof(arr));
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[5] = { 1,2,3,4,5 };
//	printf("&arr[0] = %p\n", &arr[0]);
//	printf("arr = %p\n", arr);
//	printf("&arr = %p\n", &arr);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[5] = { 1,2,3,4,5 };
//	printf("&arr[0] = %p\n", &arr[0]);
//	printf("arr = %p\n", arr);
//	printf("&arr = %p\n", &arr);
//	return 0;
//}

#include <stdio.h>
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	printf("&arr[0] = %p\n", &arr[0]);
	printf("&arr[0]+1 = %p\n", &arr[0] + 1);
	printf("arr = %p\n", arr);
	printf("arr+1 = %p\n", arr + 1);
	printf("&arr = %p\n", &arr);
	printf("&arr+1 = %p\n", &arr + 1);
	return 0;
}